本篇文章同步發表在 HKT 線上教室 部落格,線上影音教學課程已上架至 Udemy 和 Youtube 頻道。另外,想追蹤更多相關技術資訊,歡迎到 臉書粉絲專頁 按讚追蹤喔~
範例名稱:檢查GPS狀態
開發人員:HKT (侯光燦)
程式語言:Kotlin
開發環境:Android Studio 4.1.2 & Android 11 & Kotlin 1.4.30
授權範圍:使用時必須註明出處且不得為商業目的之使用
範例下載點:點我下載
昨天跟大家介紹,如何獲取到定位權限之後,今天要來跟大家介紹,如何檢查 GPS 是否開啟,在裝置未開啟 GPS 的狀態下,我們可以引導使用者前去裝置設定頁開啟。若已經是開啟裝態,則可以開始獲取經緯度。而如何獲取經緯度的部分,會留在明天再繼續跟大家介紹。今天主要會關注在,如何檢查 GPS 是否開啟。
透過 LocationManager 其中的 isProviderEnabled 方法來檢查GPS是否開啟,若未開啟,則彈跳出詢問視窗,引導使用者前往設定開啟。若已經開啟,則可以開始獲取經緯度。
private fun checkGPSState() {
val locationManager = mContext.getSystemService(Context.LOCATION_SERVICE) as LocationManager
if (!locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
AlertDialog.Builder(mContext)
.setTitle("GPS 尚未開啟")
.setMessage("使用此功能需要開啟 GSP 定位功能")
.setPositiveButton("前往開啟",
DialogInterface.OnClickListener { _, _ ->
startActivityForResult(
Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS), REQUEST_ENABLE_GPS
)
})
.setNegativeButton("取消", null)
.show()
} else {
//todo getDeviceLocation()
Toast.makeText(this, "已獲取到位置權限且GPS已開啟,可以準備開始獲取經緯度", Toast.LENGTH_SHORT).show()
}
}
在前往設定頁上,我們有加入 REQUEST_ENABLE_GPS ,所以在設定返回時會收到 callBcak 事件。這個時候我們再去檢查 GPS 狀態是否開啟。
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
when (requestCode) {
...
REQUEST_ENABLE_GPS -> {
checkGPSState()
}
}
}
HKT 線上教室
https://tw-hkt.blogspot.com/
Freepik
https://www.freepik.com/
那今天【iThome 鐵人賽】就介紹到這邊囉~
順帶一提,KT 線上教室,臉書粉絲團,會不定期發佈相關資訊,不想錯過最新資訊,不要忘記來按讚,追蹤喔!也歡迎大家將這篇文章分享給更多人喔。
我們明天再見囉!!!掰掰~